#ifndef ODN_INPUTBINDINGMANAGER_H
#define ODN_INPUTBINDINGMANAGER_H

#include <iostream>

#include "ODN_String.h"


//class GameEvent

// CRAP
using namespace ouden;

class IEvent
{

public:

	//Override this in derived game events to do what the event is supposed to do
	virtual void activate() = 0;

	//Override this to return the event's type as a string
	virtual String getType() = 0;

	//Override this to return a description of the event
	virtual String getDescription() = 0;

};

class INetEvent
{

public:

	//Override this to return the game event encoded as a bitstream (char*) for
	// sending over the network in a packet
	virtual char* encode() = 0;

	//Override this to decode a given bitstream back into the event's own
	// data, ready for a call to activate()
	virtual void decode(char* bsBitStream) = 0;

};

void raiseEvent(IEvent* pEvent)
{

	std::cout << pEvent->getDescription() << std::endl;

	pEvent->activate();

}

void raiseEvent(INetEvent* pEvent)
{

	//std::cout << pEvent->getDescription() << std::endl;

	//pEvent->activate();

}

class CInputBindingManager
{
	public:
		CInputBindingManager();
		virtual ~CInputBindingManager();
	protected:
	private:
};

#endif // ODN_INPUTBINDINGMANAGER_H
